package ar.unsam.tp.test
import ar.unsam.tp.condicion.Cantidad
import ar.unsam.tp.condicion.Edad
import ar.unsam.tp.condicion.Lugar
import junit.framework.Assert
import org.junit.Before
import org.junit.Test
import ar.unsam.tp.programa.Partido
import ar.unsam.tp.programa.Jugador
import ar.unsam.tp.tipo.Estandar

class TestCondicion {
	var Edad condEdad1 = new Edad()
	var Edad condEdad2 = new Edad()
	var Lugar condLugar1 = new Lugar
	var Lugar condLugar2 = new Lugar
	var Cantidad condCantidad1 = new Cantidad()
	var Cantidad condCantidad2 = new Cantidad()
	var Partido partido = new Partido()

	var Jugador pepe = new Jugador("pepe")
	var Jugador jose = new Jugador("jose")
	var Jugador tito = new Jugador("tito")
	var Jugador carlos = new Jugador("carlos")
	var Jugador juan = new Jugador("juan")
	var Jugador alberto = new Jugador("alberto")
	var Jugador rodolfo = new Jugador("rodolfo")
	var Jugador perez = new Jugador("perez")
	var Jugador julian = new Jugador("julian")
	var Jugador alfredo = new Jugador("alfredo")

	@Before
	def void init() {
		condEdad1.setPrefieroEdadesMayoresA(20)
		condEdad1.setPrefieroEdadesMenoresA(30)
		condEdad2.setPrefieroEdadesMayoresA(30)
		condEdad2.setPrefieroEdadesMenoresA(40)
		condLugar1.setCondicionDeLugar("Buenos Aires")
		condLugar2.setCondicionDeLugar("Cordoba")
		condCantidad1.setCantidadDeJugadoresMayorA(7)
		condCantidad1.setCantidadDeJugadoresMenorA(11)
		condCantidad2.setCantidadDeJugadoresMayorA(7)
		condCantidad2.setCantidadDeJugadoresMenorA(9)

		pepe.setTipoDeInscripcion(new Estandar())
		jose.setTipoDeInscripcion(new Estandar())
		tito.setTipoDeInscripcion(new Estandar())
		carlos.setTipoDeInscripcion(new Estandar())
		juan.setTipoDeInscripcion(new Estandar())
		alberto.setTipoDeInscripcion(new Estandar())
		rodolfo.setTipoDeInscripcion(new Estandar())
		perez.setTipoDeInscripcion(new Estandar())
		julian.setTipoDeInscripcion(new Estandar())
		alfredo.setTipoDeInscripcion(new Estandar())
	}

	@Test
	def void testCompararEdades() {
		pepe.edad = 21
		jose.edad = 28

		partido.alta(pepe)
		partido.alta(jose)

		//partido.definirJugadores
		Assert::assertTrue(condEdad1.cumpleCondicion(partido))
		Assert::assertFalse(condEdad2.cumpleCondicion(partido))
	}

	@Test
	def void testCompararLugares() {

		partido.setLugar("Buenos Aires")

		Assert::assertTrue(condLugar1.cumpleCondicion(partido))
		Assert::assertFalse(condLugar2.cumpleCondicion(partido))

	}

	@Test
	def void testCompararCantidades() {
		partido.alta(pepe)
		partido.alta(jose)
		partido.alta(tito)
		partido.alta(carlos)
		partido.alta(juan)
		partido.alta(alberto)
		partido.alta(perez)
		partido.alta(rodolfo)
		partido.alta(julian)
		partido.alta(alfredo)

		partido.admin.managerJugadores.definirJugadores

		Assert::assertTrue(condCantidad1.cumpleCondicion(partido))
		Assert::assertFalse(condCantidad2.cumpleCondicion(partido))
	}
}
